// #include <iostream>
// #include <string>
//
// using namespace std;
//
// /***
//  * 多态的概念不重要 重要的是什么时候调用什么方法即可
//  * 个人说法： 相同行为 不同结果  因为赋值对象 不同的相同行为的不同结果
//  * ‘父类必须存在虚函数
//  * 一定存在指针的引用
//  * 一般都是public继承
//  *
//  */
//
// class Girl
// {
// public:
//     void wc()
//     {
//         cout <<"蹲"<< endl;
//     }
//     virtual void sleep()
//     {
//         cout << "girl" <<endl;
//     }
// };
//
// class Boy:public Girl
// {
// public:
//     void wc()
//     {
//         cout <<"站"<< endl;
//     }
//     virtual void sleep()
//     {
//         cout << "Boy" <<endl;
//     }
// };
//
// void test_no_virtual()
// {
//     Girl par;
//     par.wc();
//     Boy boy;
//     boy.wc();
//     boy.Girl::wc();
//
//     //指针用法
//     //正常用法
//     Girl* pw = new Girl();
//     pw->wc();
//
//     Girl* ps = new Girl;
//     ps->sleep();
//
//     //不正常的赋值操作
//     //父类指针被子类对象初始化  被允许的
//     //没有virtual类型 看指针类型 调用的是父类的方法
//     pw = new Boy;
//     pw->wc();
//
//     ps = new Boy;
//     ps->sleep();
//
//     Girl& pg = boy;
//     pg.sleep();
//
//
//     //不允许 子类指针被父类对象初始化
// }
//
//
//
// int main()
// {
//     test_no_virtual();
//     return 0;
// }